package com.spider.silence.main;

import com.spider.silence.downloader.TencentWeiBoDownloader;
import com.spider.silence.pool.TencentWeiBoDownLoaderPool;
import com.spider.silence.utils.PropertiesUtil;
//import com.spider.silence.worker.TencentWeiBoWorker;
import com.spider.silence.worker.TencentWeiBoWorker;
import org.apache.log4j.PropertyConfigurator;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * @author liyuanguo
 * @version V1.0
 * @time 2017/2/8 10:49
 * @description
 */
public class TencentWeiBoMain {
   public static void main(String[] args) throws Exception {
        PropertyConfigurator.configure( PropertiesUtil.getLogPro());//初始化日志环境
        //获取下载器池单例
        TencentWeiBoDownLoaderPool downLoaderPool= TencentWeiBoDownLoaderPool.getInstance();
        //从下载器池中获取下载器
        TencentWeiBoDownloader downLoader=null;
        while(true){
            downLoader=(TencentWeiBoDownloader)downLoaderPool.fetchDownLoader(1000);
            if(null!=downLoader){
                break;
            }
        }
        //创建任务和把任务放到任务管理中心
        downLoader.generateTask();
        //初始化任务完后把下载器放回下载器中
        downLoaderPool.releaseDownLoader(downLoader);
        //创建线程池
        ExecutorService pool =  Executors.newFixedThreadPool(3000);
        //创建多个工作者线程从下载器单例池中取下载器处理从任务中心取得的任务 用完后把下载器放回到下载器池中

        for(int i=0;i<Integer.valueOf(PropertiesUtil.getVal("TencentWeiBo.WorkerCount"));i++){
            pool.execute(new TencentWeiBoWorker());
        }
    }
}
